草庐IT

linux - bash 和 ksh 之间的子 shell 差异

我一直认为子shell不是子进程,而是另一个同一进程中的shell环境。我使用一组基本的内置函数:(echo"Hello";read)在另一个终端上:ps-tpts/0PIDTTYTIMECMD20104pts/000:00:00ksh因此,kornShell(ksh)中没有子进程。输入bash,它的行为似乎有所不同,给定相同的命令:PIDTTYTIMECMD3458pts/000:00:00bash20067pts/000:00:00bash因此,bash中的一个子进程。通过阅读bash的手册页,可以明显看出为子shell创建了另一个进程,然而它伪造了$$,这很狡猾。bash和ksh

linux - 如何使用 bash 中的安装将目录复制到目录中?

假设嵌套目录foo/bar和一个空目录dest。我想调用类似installfoodest这样的东西dest包含目录foo/bar。我尝试了以下方法:安装foodest=>安装:省略目录“foo”install-dfoodest=>没有任何反应 最佳答案 您想改用cp-r:cp-rfoodest 关于linux-如何使用bash中的安装将目录复制到目录中?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com

linux - bash 脚本 : how to find the absolute path of "symlink/.."?

给定两个文件:generic/scripts/hello.shparent/scripts->generic/scripts从任何位置调用parent/scripts/hello.sh时,我想(在脚本中)找到父目录的完整路径。在本例中为parent。主要问题是parent/scripts/..指的是unix中的generic。另一方面,涉及正则表达式的所有内容都不是通用的,并且可能容易出错。无效的解决方案:`dirname$0`/..realpath`dirname$0`/..readlink-f`dirname$0`/..`cd*something*/..;pwd``perl...a

java - System.getenv 没有获取 ~/.bash_profile 中定义的变量

这是文件~/.bash_profile中的一行exportMESSAGE="HelloWorld"我想在java中访问系统变量MESSAGE。System.getenv("MESSAGE");不起作用。 最佳答案 .bash_profile文件仅用于登录shell。如果您的java进程是从不是登录shell的shell中生成的(例如顶部带有#!/bin/sh的脚本),那么它将不会读取它(尽管它可能仍然根据您的运行方式从环境中继承MESSAGE。另请注意,对于非“登录”shell的交互式shell也不会运行.bash_profile,

c - 串口环回/双工测试,用 Bash 还是 C? (过程替换)

我有一个设置为环回的串行设备(意味着它只会回显它接收到的任何字符),我想测量有效的吞吐量速度。为此,我希望我可以使用time,如timebash-c'...'其中“...”将是我可以运行的一些命令。现在,第一个问题是我想以2000000bps使用设备,所以我不能使用ttylog或screen(它们似乎都只能达到115200bps)。但是,将/dev/ttyUSB0作为文件使用(使用文件重定向和cat)似乎工作正常:#initializeserialportstty2000000-ixonicanon/dev/ttyUSB0#backtofirstterminal,Inowhave:#$

linux - 通过 bash 脚本根据其文件夹名称重命名具有 .jpg 扩展名的文件

我的文件夹及其子文件夹中有.jpg文件。image/1/large/imagexyz.jpgimage/1/medium/imageabc.jpgimage/1/small/imagedef.jpg以此类推2,3,4...我需要用文件夹名称重命名所有图像文件。IE。imagexyz.jpg应该是large_1.jpg,imageabc.jpg应该是medium_1.jpg等等。 最佳答案 oldIFS="$IFS"IFS=/whileread-r-d$'\0'pathname;do#expectpathnametolooklike"

linux - ubuntu 12.04 的 bash 选项卡完成问题

我遇到了无法解决的制表符补全问题。具体来说,每当我尝试用制表符完成一个目录时,完成的目录名称后面会出现一个空格而不是正斜杠来完成其余部分。例如~$python~/softab补全到~$python~/software代替~$python~/software/有趣的是,cd不会发生这种情况,但它会发生其他所有情况。 最佳答案 显然这是一个已知错误。删除/etc/bash_completion.d/acroread.sh解决了这个问题。 关于linux-ubuntu12.04的bash选项卡

linux - 您如何访问您在 Bash 中获取的文件的基本文件名?

我正在bash终端中获取一个需要导出一些环境变量的文件。例子:sourcelinux_x86.envenv文件看起来有点像这样:exportARCH=/home/user/project/linux_x86我有一堆不同的架构要编译,我希望能够做这样的事情:exportARCH=/home/user/project/`basename$0.env`basename$0.env会给我env文件的basenamebashlinux_x86.envlinux_x86上面的是一个bash脚本,但当您获取文件时似乎不起作用。有没有办法从源代码中获得相同的行为? 最佳答案

linux - bash中的 ">"和 "&>"有什么区别?

在bash中我们有3种流类型:0(标准输入)1(标准输出)2(标准错误)因此,在执行某些程序时我可以使用这些流(例如,我可以将它们从控制台重定向到文件或类似/dev/null等的文件):#onlyerrorsfromSTDERRwillbeshown,STDOUTwillbemovedto/dev/nullcommand>/dev/null#onlySTDOUTwillbeshown,STDERRwillbemovedto/dev/nullcommand2>/dev/null我看到有人写命令&>/dev/nullbash中的>和&>有什么区别? 最佳答案

linux - bash:xargs 传递变量

如何将全局脚本变量传递给xargs的命令?我这样试过:TEST=hallo2echo"hallo"|xargssh-c'echopassed=$1test=$TEST'sh输出:passed=hallotest=我知道我可以使用{}token,但我需要这样做!我正在使用bash。 最佳答案 作为@chepner建议的答案添加。导出变量TEST:exportTEST=hallo2echo"hallo"|xargssh-c'echopassed=$1test="$TEST"'sh 关于lin